package com.scpii.universal.hibernate.dao;

import java.util.List;
import java.util.Map;

import com.scpii.universal.dto.UserInfoDto;
import com.scpii.universal.hibernate.entity.CatelogTab;

public interface CatelogDao extends BaseDao<CatelogTab, Integer> {
	/**
	 * 根据分类ID逻辑删除
	 * @param id
	 * @author liuhj
	 * 2012-7-9上午12:02:58
	 */
	public void delete(String ids);
	
	/**
	 * 根据分类ID查询直属下级分类
	 * @param id
	 * @return
	 * @author liuhj
	 * 2012-7-9下午10:00:32
	 */
	public List<CatelogTab> getNextLevelChildren(Integer id);
	
	/**
	 * 根据分类ID查询直属下级分类
	 * @param id
	 * @param properties
	 * 			要查询的属性
	 * @return
	 * @author liuhj
	 * 2012-7-9下午10:00:32
	 */
	public List<CatelogTab> getNextLevelChildren(Integer id,String[] properties);
	
	/**
	 * 根据企业和应用查询所有分类
	 * @param user
	 * @return
	 * @author liuhj
	 * 2012-7-18上午11:29:46
	 */
	public List<CatelogTab> getAll(UserInfoDto user);
	
	/**
	 * 根据ID获得分类信息
	 * @param id
	 * @param properties
	 * 			要查询的属性
	 * @return
	 * @author liuhj
	 * 2012-8-3下午03:09:42
	 */
	public CatelogTab getCatelogInfoById(int id,String[] properties);
	
	/**
	 * 更新父分类为有叶子节点
	 * @param id
	 * @author liuhj
	 * 2012-8-3下午04:01:42
	 */
	public void updateParentHasSubCate(int id,int hasSubCate);
	/**
	 * 获取分类及所有上级分类
	 * @param id
	 * @return
	 * @author liuhj
	 * 2012-8-3下午04:36:28
	 */
	public List<CatelogTab> getSuperiorCatelogs(int id);
	/**
	 * 获得分类及所有下级分类
	 * @param id
	 * @return
	 * @author liuhj
	 * 2012-7-23上午09:25:20
	 */
	public List<CatelogTab> getSubordinateCatelogs(int id);
	/**
	 * 根据分类ID查询直属下级分类
	 * @param id
	 * @param properties
	 * 			要查询的属性
	 * @return
	 * @author liuhj
	 * 2012-7-9下午10:00:32
	 */
	public List<CatelogTab> getNextLevelChildren(Integer appId,Integer id,String[] properties);
	
	/**
	 * sql查询
	 * @author Taylor
	 * 2012-10-15 上午11:56:10
	 * @param sql
	 * @param map
	 * @return
	 * List<CatelogTab>
	 */
	public List<CatelogTab> findBySql(final String sql, final Map<String, Object> map);
}
